class Distance implements Idistance{//使用普通内部类实现接口
    @Override
    public double calculate(Mpoint o1,Mpoint o2){
        return Math.sqrt((Math.pow((o1.getAbscissa())- o2.getAbscissa(),2))+Math.pow((o1.getOrdinate()-o2.getOrdinate()),2));//计算两点间的距离
    }
}
public class Main1_2 {
    public static void main(String[] args) {
        Mpoint mpoint1=new Mpoint(3,2);//点1
        Mpoint mpoint2=new Mpoint(3,4);//点2

        System.out.println(mpoint1.equals(mpoint2));//当用equals()方法比较两个Mpoint对象时，若对应的横纵坐标都相同，则认为相等
        System.out.println(mpoint1.toString());//当直接输出Mpoint对象时，则输出此对象的点坐标信息

        ////使用普通内部类实现接口
        Distance distance=new Distance();
        System.out.println(distance.calculate(mpoint1,mpoint2));

        //使用匿名内部类实现接口
        Idistance idistance=new Idistance() {
            @Override
            public double calculate(Mpoint o1, Mpoint o2) {
                return Math.sqrt((Math.pow((o1.getAbscissa())- o2.getAbscissa(),2))+Math.pow((o1.getOrdinate()-o2.getOrdinate()),2));//计算两点间的距离
            }
        };
        System.out.println(idistance.calculate(mpoint1, mpoint2));

        //使用lambda表达式实现接口
        Idistance idistance1= (Mpoint o1, Mpoint o2)->{//简化匿名内部类
            return Math.sqrt((Math.pow((o1.getAbscissa())- o2.getAbscissa(),2))+Math.pow((o1.getOrdinate()-o2.getOrdinate()),2));//计算两点间的距离
        };
        System.out.println(idistance1.calculate(mpoint1,mpoint2));

    }
}
